#include<iostream>
#include<string.h>
#include<pthread.h>
#include<vector>
#include<cstdlib>
#include<unistd.h>
// #include<thread>
// const int threadnum = 5;
// //多线程
// void *handlerTask(void *args)
// {
//    // std::string threadname = static_cast<char*>(args);
//     const char *threadname =static_cast<char*>(args);
//     while (true)
//     {
//         std::cout<<"I am "<<threadname<<std::endl;
//         sleep(2);
//     }
//     //不用的时候释放
//     delete []threadname;
//     return nullptr;
// }
// //多线程创建
// int main()
// {
// std::vector<pthread_t>threads;
// for(int i = 0;i<threadnum;i++)
// {
//         char *threadname = new char[64];
//         snprintf(threadname,64,"Thread-%d",i+1);
//         pthread_t tid;
//         pthread_create(&tid,nullptr,handlerTask,threadname);
//         threads.push_back(tid);
// }
// for(auto &tid : threads)
// {
//     pthread_join(tid,nullptr);
// }
// return 0;
// }
// void threadrun(int num)
// {
//     while (num)
//     {
//         std::cout<<"线程，num:"<<num<<std::endl;
//         sleep(2);
//     }
    
// }
// int main()
// {
//     std::thread t1(threadrun,10);
//     std::thread t2(threadrun,10);
//     std::thread t3(threadrun,10);
//     std::thread t4(threadrun,10);
//     std::thread t5(threadrun,10);
//     while (true)
//     {
//         std::cout<<"主线程"<<std::endl;
//         sleep(2);
//     }
//     t1.join();
//     t2.join();
//     t3.join();
//     t4.join();
//     t5.join();
//     return 0;
// }
void *threadrun(void *args)
{
     std::string name = static_cast<const char*>(args);
     int cnt  =5;
     while (true)
     {
        if(!(cnt--))
        {
            break;
        }
        std::cout<<"新线程"<<std::endl;
        sleep(1);
    }
     
}
int main()
{
    pthread_t tid;
    pthread_create(&tid,nullptr,threadrun,(void*)"thread 1");
    std::cout<<"主线程等待"<<std::endl;
    pthread_join(tid,nullptr);
    std::cout<<"主线程等待返回值"<<std::endl;
}